package com.xiongtian.springframework.beans.factory.support;

import com.xiongtian.springframework.beans.BeansException;
import com.xiongtian.springframework.core.io.Resource;
import com.xiongtian.springframework.core.io.ResourceLoader;

/**
 * @Author: xiongtian
 * @CreateTime: 2025-03-27  10:47
 * @Version: 1.0
 * @Description: Simple interface for bean definition readers
 */

public interface BeanDefinitionReader {

    /**
     * getRegistry()、getResourceLoader()，都是用于提供给后面三个方法的工具，加载和注册
     */
    BeanDefinitionRegistry getRegistry();

    ResourceLoader getResourceLoader();

    /**
     * 加载bean定义
     * <p>
     *
     * @param resource 资源
     */
    void loadBeanDefinitions(Resource resource) throws BeansException;

    /**
     * 加载bean定义
     * <p>
     * 支持多个资源
     *
     * @param resources 资源数组
     * @throws BeansException 异常
     */
    void loadBeanDefinitions(Resource... resources) throws BeansException;


    /**
     * 加载bean定义
     * <p>
     *
     * @param location 资源路径
     * @throws BeansException 异常
     */
    void loadBeanDefinitions(String location) throws BeansException;


    /**
     * 加载bean定义
     *
     * @param locations 资源路径集合
     * @throws BeansException 异常
     */
    void loadBeanDefinitions(String... locations) throws BeansException;
}
